package cn.huaqingcheng.tool.data;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;

/**
 * 只读的分页参数
 *
 * @apiNote 实现 {@link Serializable} 只是以防万一, 并不保证 {@link #getList()} 内元素可序列化
 */
@SuppressWarnings("unused")
@Getter
@ToString
@EqualsAndHashCode(callSuper = true)
public final class ReadOnlyPage<E> extends SimplePage<E> implements Page<E>, Serializable {

    @Serial
    private static final long serialVersionUID = 1;

    public ReadOnlyPage() {
        super();
    }

    public ReadOnlyPage(Integer pageSize, Integer pageNumber) {
        super(pageSize, pageNumber);
    }

    public ReadOnlyPage(Integer pageSize, Integer pageNumber, Integer total, List<E> list) {
        super(pageSize, pageNumber, total, list);
    }

    @Override
    public Page<E> setSize(Integer pageSize) {
        throw new UnsupportedOperationException();
    }

    @Override
    public Page<E> setCurrent(Integer pageNumber) {
        throw new UnsupportedOperationException();
    }

    @Override
    public Page<E> setTotal(Integer total) {
        throw new UnsupportedOperationException();
    }

    @Override
    public Page<E> setList(List<E> list) {
        throw new UnsupportedOperationException();
    }

}
